The modern communications era has brought about a tremendous expansion of wireline and wireless networks. Computer networks, television networks, and telephony networks are experiencing an unprecedented technological expansion, fueled by consumer demand. Wireless and mobile networking technologies have addressed related consumer demands, while providing more flexibility and immediacy of information transfer.
Current and future networking technologies continue to facilitate ease of information transfer and convenience to users. Due to the now ubiquitous nature of electronic communication devices, people of all ages and education levels are utilizing electronic devices to communicate with other individuals or contacts, receive services and/or share information, media and other content. One area in which there is a demand to increase ease of information transfer relates to services for transferring large amounts of data over a network.
For instance, currently, transferring large amounts of data over a network such as encoded videos, photos, Moving Picture Experts Group (MPEG) MPEG-2 Audio Layer III (MP3) files, and frame buffer data is quite common. One example of a large amount of data being transferred over a network relates to Virtual Network Computing (VNC) data. At present, VNC typically enables a graphical desktop to be shared remotely from one computer to another computer. For instance, VNC may relay graphical screen updates from one computer to another computer over a network. In this regard, VNC may typically be used to replicate a user interface of a VNC server to a display of a VNC client. In order to achieve a desirable user experience, a VNC server typically needs to transmit an entire frame buffer to a VNC client at a high frame rate. Transmitting large amounts of data from a VNC server to a VNC client typically consumes a number of computing resources. However, it may be beneficial to minimize processing load that may caused by a VNC server since the more processing load that a VNC server consumes, the less processing power a foreground application may be able to utilize.
Another example of a large amount of data being transferred over a network relates to Universal Plug and Play (UPnP) data. In this regard, an UPnP media server may be utilized to share and provide media such as music and video to UPnP clients. At present, UPnP media servers are supporting devices such as mobile phones, and it is becoming more beneficial to support such devices without consuming large amounts of processing power in order to reduce an undesirable impact on the existing software being executed in a system.
An additional example of a large amount of data being transferred over a network may relate to streaming data. For example, a web server streaming multiple videos simultaneously may require a large amount of data to be transferred across a network. If each stream causes too much processing capacity to be consumed, a processing load may limit the maximum number of streams a server may be able to support. However, decreasing processing load may result in better user experience or may increase the total capacity of a given server since large amounts of data transfer over a network typically consumes much power.
For instance, transmitting user interface frame data in a high frame rate or large media files may consume a lot of central processing unit (CPU) power such as, for example, sending Video Graphics Array (VGA) data of 30 fps over VNC may result in 36.9 MB/s of data traffic which may result in more than 24,500 Ethernet packets. Handling such large amounts of packets using the software based Transmission Control Protocol (TCP) and the Internet Protocol (IP) (TCP/IP) stack may be challenging, particularly for mobile systems with limited processing capability. The problem may become enhanced when such transmission is to occur in a background without affecting a foreground application. For example, CPU consumption of a VNC server or an UPnP media server executing in a background should be minimal to avoid affecting foreground applications being executed.
Naive transmission of data over a TCP/IP stack typically involves copying the data at least once from kernel space to a background server, and then the data is typically copied again to a TCP/IP stack. Due to the large amount of data being copied and transferred, a high quantity of processing capacity may be consumed.
In view of the foregoing drawbacks, it may be beneficial to provide a more efficient and reliable mechanism of transferring large amounts of data across a network that may reduce a quantity of computing resources for the data transfer.